Dalle Prompt alle Pipeline
L'evoluzione dell'interazione con i modelli linguistici
Nelle lezioni precedenti ci siamo concentrati sulle interazioni con una sola prompt. Tuttavia, le applicazioni del mondo reale richiedono molto di piรน di una semplice domanda e risposta. Per creare sistemi AI scalabili, dobbiamo passare all'Orchestrazione. Questo implica collegare diverse chiamate al modello linguistico, utilizzare logiche di ramificazione basate sull'input dell'utente e consentire al modello di interagire con dati esterni.
I blocchi fondamentali dell'orchestrazione
- LLMChain: L'unitร fondamentale. Combina un modello di prompt con un modello linguistico.
- Catene sequenziali: Consentono di creare un flusso di lavoro multistep in cui l'output di un passaggio diventa l'input per il successivo.
- Catene Router: Funzionano come "regolatori del traffico", utilizzando un modello linguistico per decidere quale sotto-catena specializzata deve gestire una richiesta specifica (ad esempio, inviare una domanda di matematica a una "Catena Matematica" e una domanda di storia a una "Catena Storia").
Il principio fondamentale: la Regola della Catena
Le catene permettono di combinare piรน componenti โ modelli, prompt e memoria โ in un'unica applicazione coerente. Questa modularitร garantisce che compiti complessi possano essere suddivisi in passaggi gestibili e debuggabili.
Suggerimento esperto: Debug delle pipeline
Quando le tue pipeline diventano complesse, usa
langchain.debug = True. Questa "visione a raggi X" ti permette di vedere esattamente quali prompt vengono inviati e quali output grezzi vengono ricevuti nel retroscena in ogni fase della catena.
TERMINALbash โ 80x24
> Ready. Click "Run" to execute.
>
Question 1
In LangChain, what is the primary difference between a
SimpleSequentialChain and a standard SequentialChain?Challenge: Library Support Router
Design a routing mechanism for a specialized bot.
You are building a support bot for a library.
Define the logic for a
Define the logic for a
RouterChain that distinguishes between "Book Recommendations" and "Operating Hours."
Step 1
Create two prompt templates: one for book suggestions and one for library schedule info.
Solution:
book_template = """You are a librarian. Recommend books based on: {input}"""
schedule_template = """You are a receptionist. Answer hours queries: {input}"""
prompt_infos = [
{"name": "books", "description": "Good for recommending books", "prompt_template": book_template},
{"name": "schedule", "description": "Good for answering operating hours", "prompt_template": schedule_template}
]Step 2
Define the
router_template to guide the LLM on how to classify the user's intent, and initialize the chain.Solution:
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(
destinations=destinations_str
)
router_prompt = PromptTemplate(
template=router_template,
input_variables=["input"],
output_parser=RouterOutputParser(),
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)
chain = MultiPromptChain(
router_chain=router_chain,
destination_chains=destination_chains,
default_chain=default_chain,
verbose=True
)